
// Example of an inefficient use of recursion

public class Fibonacci {

	public static long iterFib(long n) {
		if (n <= 1) {
			return n;
		}
		else {
			long fib = 0;
			
			long fib_2 = 0;
			long fib_1 = 1;
			for (long i=2; i <= n; ++i) {
				fib = fib_1 + fib_2;
				fib_2 = fib_1;
				fib_1 = fib;
			}

			return fib;
		}
	}

	public static long recFib(long n) {
		if (n <= 1) {
			return n;
		}
		else {
			return recFib(n-1) + recFib(n-2);
		}
	}

	public static void main(String[] args) {
		for (long n=0; n < 75; ++n) {
			System.out.println("fib(" + n + ") = " + iterFib(n));
		}
	}

}
